package com.correo.controladores.server.event;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import com.correo.database.beans.IBean;
import com.correo.exceptions.server.AltaException;
import com.correo.exceptions.server.RefreshException;
import com.correo.modelo.server.ModelServer;
import com.correo.vista.server.windows.AdministracionCorreo;

public class ActionListenerAlta implements ActionListener {
	private AdministracionCorreo administracionCorreo;
	private ModelServer model;

	public ActionListenerAlta(AdministracionCorreo administracionCorreo,
			ModelServer model) {
		this.model = model;
		this.administracionCorreo = administracionCorreo;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		try {
			switch (administracionCorreo.getTab()) {
			case AdministracionCorreo.TAB_CASILLA_CORREO:
				
				administracionCorreo.getDialogCasillaCorreo(null,false,false).setVisible(true);
				if (administracionCorreo.getDialogCasillaCorreo(null,false,false).isBotonOk()) {
					System.out.println("Alta CasillaCorreo ");
					this.model.getModelCasillaCorreo().alta((IBean) administracionCorreo.getDialogCasillaCorreo(null,false,false).getData());
					
					administracionCorreo.getDialogCasillaCorreo(null,false,false).setActualizarTabla(model.getModelCasillaCorreo().refresh());
					administracionCorreo.actualizarTablaUsuario(this.model.getModelUser().refresh());
				}
				break;
			case AdministracionCorreo.TAB_USUARIO_SOCKET:
				System.out.println("alta usuario del servidor socket");
				
				break;
			case AdministracionCorreo.TAB_USUARIO:
				System.out.println("alta Usuario correo");
				administracionCorreo.getDialogUser(null,false,false).setVisible(true);
				if (administracionCorreo.getDialogUser(null,false,false).isBotonOk()) {
					
					this.model.getModelUser().alta((IBean) administracionCorreo.getDialogUser(null,false,false).getData());
					
					administracionCorreo.getDialogUser(null,false,false).setActualizarTabla(model.getModelUser().refresh());
				}
				break;
			case AdministracionCorreo.TAB_OFICINA_CORREO:
				administracionCorreo.getDialogOficce(null,false,false).setVisible(true);
				if(administracionCorreo.getDialogOficce().isButtonOK()){
					System.out.println("alta oficina de correo");
					model.getModelOficce().alta(administracionCorreo.getDialogOficce().getData());
					administracionCorreo.getDialogOficce(null,false,false).setActualizarTabla(model.getModelOficce().refresh());
				}
				
				break;
			case AdministracionCorreo.TAB_RELACION_CONFIANZA:
				System.out.println("alta Relacion de confianza");
				break;

			default:
				System.out.println("opcion incorrecta ALTA");
				break;
			}
		} catch (AltaException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}catch (RefreshException e2) {
			// TODO: handle exception
			e2.printStackTrace();
		} catch (SQLException e2) {
			// TODO Auto-generated catch block
//			try {
//				ManagerDataBase.getInstance().getConnection().rollback();
//			} catch (SQLException e1) {
//				// TODO Auto-generated catch block
//				e1.printStackTrace();
//			} catch (ClassNotFoundException e1) {
//				// TODO Auto-generated catch block
//				e1.printStackTrace();
//			}
			e2.printStackTrace();
		} catch (ClassNotFoundException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}catch (Exception e3) {
			// TODO: handle exception
			e3.printStackTrace();
		}

	}

	

}
